// 定义LinkedList类
// 定义一个辅助类Node

// 定义类的语法
// 类名的首字母一定要大写
// class 类名 {
//     通过构造方法来初始化数据
//     consturctor() {
//         进行数据的初始化
//     }
//     consturctor(element) {
//         进行数据的初始化
//     }
//     普通方法
//     function1()
//     function2()
//     function3()

//     使用类 
// 对象名称和类名不能一样
//     const 对象名称=new 类名();
class Node {
    constructor(data) {
        this.element = data;
        this.next = undefined;
    }
}
class LinkedList {
    constructor() {
            this.head = undefined;
            this.length = 0;
        }
        //实现具体的方法
        // 从尾部进行插入

    push(data) {
        const node = new Node(data);
        let current;
        // 链表从头开始查询 没有索引
        //分情况讨论
        //(1.1)插入值为第一个元素
        if (this.head == null) {
            this.head = node;
        } else {
            current = this.head;
            while (current.next != null) {
                current = current.next;
            }
            //找到最后一个位置 将新的node 插入到该位置之后
            current.next = node;
        }
        this.length++;
    }

}
// 测试
const linkedlist = new LinkedList();
linkedlist.push('a');
linkedlist.push('b');
linkedlist.push('c');
linkedlist.push('d');
console.log(linkedlist);